// HandlerImagenes.cpp: implementation of the HandlerImagenes class.
//
//////////////////////////////////////////////////////////////////////

#include "HandlerImagenes.h"
#include "Cliente.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

HandlerImagenes::HandlerImagenes(Cliente* cliente)
{

	this->cliente = cliente;

}

HandlerImagenes::~HandlerImagenes()
{

}

//protocolo
//[SIZE_NOMBRE + NOMBRE + SIZE_ARCHIVO + ARCHIVO]
void HandlerImagenes::notify(void* data) {
	char* dataChar = (char*) data;

	int posicion = 0;
	int sizeNombre = Rebuilder::getEntero((char*)data, posicion);
	char* nombre = (char*)malloc(sizeNombre);

	strcpy(nombre,dataChar+posicion);

	std::string stringNombre(nombre);

	posicion += sizeNombre;
	
	int sizeArchivo = Rebuilder::getEntero(dataChar,posicion);

	char* datosImagen = (char*) malloc(sizeArchivo);
	
	memcpy(datosImagen,dataChar+posicion,sizeArchivo);

	std::ofstream outfile;
	outfile.open(stringNombre.c_str(), std::ios_base::binary);
	outfile.write(datosImagen, sizeArchivo);
	outfile.close();


	this->cliente->agregarTextura(new textura(stringNombre));
	free(datosImagen);
	free(nombre);
}
